/*
 * 学习逻辑运算符
 * & && | || ! ^
 */
public class learn_logic {
  /*
   * 区分 & 和 &&
   * 相同点：
   * 左右两边的变量都为 true 时 结果
   * 不同点：
   * 执行过程中：
   * 1) 当符号左边是 true 时，& && 继续判断右边的表达式
   * 2) 当符号左边是 false 时，& 继续判断右边的表达式，&& 不再判断右边的表达式
   * 推荐使用 &&
   */
  public static void main(String[] args) {
    int i1 = 10;
    boolean b1 = true;
    b1 = false;
    if (b1 & (i1++ > 10)) {
      System.out.println("ture!!!");
    } else {
      System.out.println("false!!!");
    }
    System.out.println("i1=" + i1);
    int i2 = 10;
    boolean b2 = true;
    b2 = false;
    if (b2 && (i2++ > 10)) {
      System.out.println("i2-ture!!!");
    } else {
      System.out.println("i2-false!!!");
    }
    System.out.println("i2=" + i2);
    // *************************************************************
    /**
     * 区分 | 和 ||
     * 1.相同点： 都是 或 的关系 左右两边有一个为true 结果为true
     * 2.不同点：
     * 执行过程中：
     * 1) 当符号左边是 true 时，| 继续判断右边的表达式，|| 不再判断右边的表达式
     * 2) 当符号左边是 false 时，| 继续判断右边的表达式，|| 不再判断右边的表达式
     * 推荐使用 ||
     */

    // 练习题1
    boolean x = true;
    boolean y = false;
    short z = 42;
    if ((z++ == 42) && (y = true)) {
      z++;
    }
    if ((x = false) || (++z == 45)) {
      System.out.println("执行");
      z++;
    }
    System.out.println("z=" + z);

  }
}
